package com.lt.lumentracks.service;

import com.lt.lumentracks.entity.po.ConversationUser;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 会话成员表 (关联表) 服务类
 * </p>
 *
 * @author swl
 * @since 2025-10-06
 */
public interface IConversationUserService extends IService<ConversationUser> {

    // 更新用户在某会话中最后阅读的消息id
    void updateLastMsg(Long convId, Long lastMsgIdNew);

    // 批量更新用户在某会话中最后阅读的消息id
    void batchUpdateLastMsg(List<ConversationUser> cu_list);

    // 更新用户在某会话中最后阅读的消息id -- 存入redis中
    void updateLastMsg_V2(Long convId, Long lastMsgIdNew);


    // 两个用户之间是否已经存在单聊会话
    boolean isSingleChatExists(Integer senderId, Integer receiverId);

    // 获取两个用户之间的私聊会话ID
    List<Long> getSingleChat(Integer currentId, Integer talkerUid);

    // 批量查询（对于当前用户来说的）每个会话的未读消息数
    List<Map<String, Object>> countUnreadMessages(List<Long> rawIds, Integer userId, int maxReturnCount);

    // 重载方法：当不传maxReturnCount时，默认设置为100
    List<Map<String, Object>> countUnreadMessages(List<Long> rawIds, Integer userId);

    // 查询用户在当前会话中上次阅读的消息id
    Long queryLastMsg(Long convId);
}
